using Core.SimpleTemp.Application;
using Core.SimpleTemp.Common.Authorization;
using Core.SimpleTemp.Common.PagingQuery;
using Core.SimpleTemp.Mvc.Api.Internal;
using Core.Toolkit.Authorization;
using Core.Toolkit.Core;
using Core.Toolkit.Core.Api;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using System.Linq;

namespace Core.SimpleTemp.Api.Api
{
/// <summary>
/// JG_JobsAssessDetail
///</summary>
    [ApiExplorerSettings(GroupName = "Sys")]//swagger分类标签
    [Route("api/[controller]")]//路由说明
    [EnableCors("any")]//跨域规则
    [ApiController]//APi标识Controller
    [Authorize]//验证是否登录
    public class JG_JobsAssessDetailController : CoreApiController
    {
    private readonly JG_JobsAssessDetailService  _service;
    /// <summary>
    /// JG_JobsAssessDetail
    ///</summary>
    public  JG_JobsAssessDetailController (JG_JobsAssessDetailService  service)
    {
    _service = service;
    }

    #region 基础增删改查
    /// <summary>
    /// 查询
    ///</summary>
    /// <param name="pagingQueryModel"></param>
    /// <returns></returns>

    [HttpPost("GetList")]
    [PermissionFilter(nameof(JG_JobsAssessDetailController) + "_" + nameof(JG_JobsAssessDetailController.GetList), AuthorizationConst.LIST)]
    public async Task<IActionResult>
        GetList(PagingModel<JG_JobsAssessDetailDto>
            pagingQueryModel)
            {
            IPageModel<JG_JobsAssessDetailDto>
                result;
                result = await _service.GetList(pagingQueryModel);
                return this.JsonSuccess(result);
                }

                /// <summary>
                /// 添加/修改
                ///</summary>
                /// <param name="dto"></param>
                /// <returns></returns>

                [HttpPost("Save")]
                [PermissionFilter(nameof(JG_JobsAssessDetailController) + "_" + nameof(JG_JobsAssessDetailController.SaveAsync), AuthorizationConst.SAVE)]
                public async Task<IActionResult>
                    SaveAsync(JG_JobsAssessDetailDto dto)
                    {
                    //添加
                    if (Equals(dto.Id, Guid.Empty))
                    {
                    await _service.InsertAsync(dto);
                    return this.JsonSuccess(string.Empty);
                    }
                    else
                    {
                    await _service.UpdateAsync(dto);
                    return this.JsonSuccess(string.Empty);
                    }
                    }

                    /// <summary>
                    /// DeleteMuti
                    ///</summary>
                    /// <param name="ids"></param>
                    /// <returns></returns>
                    [HttpPost("DeleteMuti")]
                    [PermissionFilter(nameof(JG_JobsAssessDetailController) + "_" + nameof(JG_JobsAssessDetailController.DeleteMutiAsync),AuthorizationConst.DELETE)]
                    public async Task<IActionResult>
                        DeleteMutiAsync([FromBody]Guid[] ids)
                        {

                        await _service.DeleteBatchAsync(ids);
                        return this.JsonSuccess();
                        }


                        /// <summary>
                        /// 根据ID获取信息
                        ///</summary>
                        /// <param name="id"></param>
                        /// <returns></returns>

                        [HttpGet("Get")]
                        public async Task<IActionResult>
                            Get(Guid id)
                            {
                            var model = await _service.GetAsync(id);
                            if (model == null) return this.JsonFaild("未找到对应数据:" + id);
                            return this.JsonSuccess(model);
                            }


                            /// <summary>
                            /// 导出
                            ///</summary>
                            /// <param name="pagingQueryModel"></param>
                            /// <returns></returns>

                            [HttpPost("Export")]
                            [PermissionFilter(nameof(JG_JobsAssessDetailController) + "_" + nameof(JG_JobsAssessDetailController.Export),AuthorizationConst.EXPORT)]
                            public async Task<IActionResult>
                                Export(PagingModel<JG_JobsAssessDetailDto>
                                    pagingQueryModel)
                                    {
                                    var fileName = await _service.Export(pagingQueryModel);
                                    if (string.IsNullOrWhiteSpace(fileName))
                                    return this.JsonFaild(NULL_DATA_FOR_EXCEL_EXPORT);
                                    return this.JsonSuccess(fileName);
                                    }
                                    #endregion


                                    }
                                    }
